#include <REGX52.H>
#include "Delay.h"		//包含Delay头文件
#include "LCD1602.h"	//包含LCD1602头文件
#include "MatrixKey.h"	//包含矩阵键盘头文件

unsigned char KeyNum;
unsigned int PassWord,count,Time;

void main()
{
	LCD_Init();							//LCD初始化
	LCD_ShowString(1,1,"PassWord:");	//LCD显示字符串
	
	PassWord=0;// 上电初始化密码为0一次

	while(1)

	{
		KeyNum=MatrixKey();				//获取矩阵键盘键码
		if(KeyNum)						//如果有按键按下
		{
				if(KeyNum==13)//退格按钮
				{
					PassWord=PassWord/10;//密码右移

					count--;//计数后减一

				}
					
				if(KeyNum==12)//指定 S12为取消键
				{
					PassWord=0;// 密码清零
					count=0;//计数清零

				}

			if(count<4)//保证密码为四位
			{
					if(KeyNum<=10)
				{		
					PassWord=PassWord*10;//密码左移
					PassWord=PassWord+KeyNum%10;//重新填入下一位密码,KeyNum%10对10取余

					count++;//计数后加一
				}
				
			}	
			
			if(KeyNum==11)//指定 S11为确认键
			{
				if(PassWord==2345)//正确密码
				{
					LCD_ShowString(2,1,"OK Please");//显示“OK”
					PassWord=0;// 超出后清零
					count=0;//计数清零



				}
				else
				{
					LCD_ShowString(2,1,"ERR Again");//显示"ERR"
					Delay(3000);
					LCD_ShowString(2,1,"         ");//显示“空”
					Time++;

					PassWord=0;// 超出后清零
					count=0;//计数清零


				}
			if(Time==2)//超过最大次数锁定
			{
				LCD_ShowString(2,1,"LOCK!");
				while(1)
				{
					PassWord=0;//不在允许输入密码
				}
			}


			}
			LCD_ShowNum(1,13,PassWord,4);	//LCD显示键码
		}
	}
}
